package cn.iocoder.yudao.module.xiaoBizHandler.service.codegen.newInner;

import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum;
import cn.iocoder.yudao.module.xiaoBizHandler.service.codegen.inner.XiaoBizHandlerCodegenBuilder;
import lombok.Data;

import java.util.Set;

@Data
public class GlobalBinding {

    // -------------------------全局配置-------------------------
    /**
     * 比如 cn.iocoder.yudao
     */
    String basePackage;

    /**
     * 比如 cn.iocoder.yudao.framework
     */
    String baseFrameworkPackage;


    // -------------------------全局 Java Bean-------------------------


    /**
     * 比如 {@link cn.iocoder.yudao.framework.common.pojo.CommonResult}
     */
    String CommonResultClassName;

    /**
     * 比如 {@link cn.iocoder.yudao.framework.common.pojo.PageResult}
     */
    String PageResultClassName;


    // -------------------------VO 类，独有字段-------------------------

    /**
     * 比如 {@link cn.iocoder.yudao.framework.common.pojo.PageParam}
     */
    String PageParamClassName;

    /**
     * 比如 {@link cn.iocoder.yudao.framework.excel.core.annotations.DictFormat}
     */
    String DictFormatClassName;

    // -------------------------DO 类，独有字段-------------------------

    /**
     * 比如 {@link}cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO
     */
    String BaseDOClassName;


    /**
     * 比如 {@link LambdaQueryWrapperX}
     */
    String QueryWrapperClassName;


    /**
     * 比如 {@link BaseMapperX}
     */
    String BaseMapperClassName;

    // -------------------------Util 工具类-------------------------

    /**
     * 比如 {@link ServiceExceptionUtil}
     */
    String ServiceExceptionUtilClassName;

    /**
     * 比如 {@link DateUtils}
     */
    String DateUtilsClassName;

    /**
     * 比如 {@link cn.iocoder.yudao.framework.excel.core.util.ExcelUtils}
     */
    String ExcelUtilsClassName;

    /**
     * 比如 {@link ObjectUtils}
     */
    String ObjectUtilsClassName;

    /**
     * 比如 {@link DictConvert}
     */
    String DictConvertClassName;

    /**
     * 比如 {@link OperateLog}
     */
    String OperateLogClassName;

    /**
     * 比如 {@link OperateTypeEnum}
     */
    String OperateTypeEnumClassName;

    /**
     * 比如 {@link XiaoBizHandlerCodegenBuilder#BASE_DO_FIELDS}
     */
    Set<String> baseDOFields;


}
